package org.zjt.agent.generate;

import java.util.List;
import java.util.Optional;

/**
 * Description:
 *
 * @author juntao.zhang
 * Date: 2018-07-05 下午1:21
 * @see
 */
public interface ClassHandler<T> {

    Optional<byte[]> redefine(T classDefine);

    boolean support(T classDefine);

    int order();

    GeneratorEnum getGenerator();

    // List<MethodRedefineStrategy> methodRedefineStrategies
    void addMethodRedefineStrategies(List<MethodRedefineStrategy> methodRedefineStrategies);

    void addMethodRedefineStrategie(MethodRedefineStrategy methodRedefineStrategie);
}
